User loginNavigation |
Computer Aided Formal Reasoning (@ Nottingham)
Have you guessed? It's an Epigram course module from the University of Nottingham. What you will find in the linked page is a set of exercises which consist of downloadable Epigram files for your enjoyment. By Ehud Lamm at 2006-10-17 15:25 | Functional | Type Theory | login or register to post comments | other blogs | 6837 reads
Delimited Control for PLT SchemeVia the PLT Scheme mailing list:
You can read about the primitive functionality of delimited continuations in the language manual. You can read about all the different control operators available in the new (To prevent any confusion: this change is in the latest SVN but not yet a final release.) Good Ideas, Through the Looking GlassNiklaus Wirth. Good Ideas, Through the Looking Glass, IEEE Computer, Jan. 2006, pp. 56-68.
A personal look at some ideas, mostly from the field of programming languages. Some of Wirth's objections are amusing, some infuriating - and some I agree with...
LtU readers will obviously go directly to sections 4 (Programming Language Features) and 6 (Programming Paradigms). Here are a few choice quotes:
LtU readers are also going to "enjoy" what Wirth has to say about functional programming... (Thanks Tristram) A Madman Dreams of Turing MachinesHere's something a little unusual... a novel. A Madman Dreams of Turing Machines. Janna Levin.
The potential interest to this audience should be fairly obvious, although the book is centered at least as much on their substantial personal struggles as on their work. Here is the New York Times review, perhaps it would be nice to have an LtU review as well... By Matt Hellige at 2006-10-13 21:31 | Fun | login or register to post comments | other blogs | 8040 reads
Flapjax - Functional Reactive AjaxFlapjax s a functional reactive compiler and Javascript library for creating interactive web GUIs, created by Brown PLT. You can try the compiler online, or read the docs to get more of an idea of how the language works. If you've used OO style MVC before, but not functional reactive programming (FRP), take a look at Flapjax for a different, and in my opinion, cleaner approach to the same problem. If you're familiar with FrTime you'll recognise the elements of Flapjax -- Flapjax is essentially a Javascript implementation of FrTime, and a compiler from the Flapjax language to Javascript to make writing code less verbose. The key differences compared to the Haskell FRP tradition are that FrTime is asynchronous and uses mutable state. This means behaviours (time varying values) can be sampled at any time, whereas in Haskell FRP behaviours are all sampled at the same time, and it isn't necessary to use the arrow combinators to hide accumulators. Of course it isn't all roses: the implementation is more complex, and doesn't work well in, say, a continuation based web server as mutable state will mess up resumptions of previous continuations. (Don't get the idea that this is a problem for Flapjax -- it runs on the client, not the server.) LogFun - Building Logics by Composing Functors
Logic Functors: A Toolbox of Components for Building Customized and Embeddable Logics - Sébastien Ferré and Olivier Ridoux :
Here's a bit more from the documentation (PDF): Logic Functors form a framework for specifying new logics, and deriving automatically theorem provers and consistency/completeness diagnoses. Atomic functors are logics for manipulating symbols and concrete domains, while other functors are logic transformers that may add connectives or recursive structures, or may alter the semantics of a logic. The semantic structure of the framework is model theoretic as opposed to the verifunctional style often used in classical logic. This comes close to the semantics of description logics, and we show indeed that the logic ALC can be rebuilt using logic functors. This offers the immediate advantage that variants of ALC can be explored and implemented almost for free. The use of OCaml functors here may be interesting even for those who aren't into logic languages. The system allows new logics to be created in OCaml itself, by simply composing OCaml functors. This is covered further in Implementation as ML Functors. The quickest way to get a feel for what this system does is to look at the examples. (If the story subject line looks familiar to anyone, I was recently reading Guy Steele's Building Interpreters by Composing Monads...) By Anton van Straaten at 2006-10-13 02:18 | DSL | Logic/Declarative | login or register to post comments | other blogs | 8191 reads
Run time type checkingA couple of items that are loosely related. First, Sun is updating the Java Class File Specification. The main difference is the introduction of a new verification scheme based on type checking rather than type inference. This scheme has inherent advantages in performance (both space (on the order of 90% savings) and time (approximately 2x)) over the previous approach. It is also simpler and more robust, and helps pave the way for future evolution of the platform.I haven't read through the fine print of the changes yet - at some point I need to update my class file disassembler - but then I still haven't gotten around to the changes in Java 5 which were much less involved. One thing that I found interesting was the use of Prolog in the specification (predicates and horn clauses). The type rules that the typechecker enforces are specified by means of Prolog clauses. English language text is used to describe the type rules in an informal way, while the Prolog code provides a formal specification.On a different note, there is a new thesis paper on A Semantics For Lazy Types related to the Alice ML project. The specifications for runtime type checking are in the more formal operational specs of ML and the runtime type checking is more ambitious than that associated with Java. Type analysis needs to compare dynamic types, which have to be computed from (probably higher-order) type expressions that may contain types from other modules. If lazy linking has delayed the loading of these modules so far, then the corresponding types are represented by free type variables. For the type-level computation in our model this means that it may encounter free type variables whose denotation depends on yet unevaluated term-level expressions. To proceed, it inevitably has to eliminate these variables by triggering the necessary evaluations on term-level. In other words: type-level computation has to account for lazy types. We give two strategies for this and show soundness properties for the resulting calculi.In general, it means you still have to with dynamic type checking in static languages - though the meaning is different than the runtime typing that occurs with dynamic PLs. Scott Rosenberg: Code Reads
This is an ongoing series with Dijkstra's "Go To Statement Considered Harmful" coming up. This essay was mentioned here a few times, of course, so you might want to check the archives. This item is not directly language related, but since you can win prizes, I thought I'd better let you guys know.. By Ehud Lamm at 2006-10-09 18:59 | General | History | Software Engineering | login or register to post comments | other blogs | 11166 reads
A Stepper for Scheme MacrosA Stepper for Scheme Macros. Ryan Culpepper, Matthias Felleisen.
Another paper from the Scheme workshop. Apart from being a nice exercise for macro lovers, a good macro debugger is essential for lowering the barrier to macro programming. Since macro programming is an important technique for building DSELs and for language oriented programming in general, having better macro debugging facilities is a Good Thing. By Ehud Lamm at 2006-10-08 13:34 | DSL | Meta-Programming | Teaching & Learning | login or register to post comments | other blogs | 7443 reads
A Very Modal Model of a Modern, Major, General Type SystemA Very Modal Model of a Modern, Major, General Type System, by Andrew W. Appel, Paul-Andre Mellies, Christopher D. Richards, and Jerome Vouillon. Preliminary version of August 10, 2006. We wish to compile languages such as ML and Java into typed intermediate languages and typed assembly languages. These TILs and TALs are particularly difficult to design, because in order to describe the program transformations applied in the course of compilation, they require a very rich and expressive type system... Putting all these type ingredients together in a low-level language is an intricate exercise. A formal proof of soundness —any well-typed program does not go wrong—is thus recommended for any type system for such TILs and TALs. It has been awhile since we discussed work in this area. The current paper is quite intriacte, it seems, and I don't have the time to read it carefully. Maybe someone else would care to elaborate. The paper makes a few technical innovations, and uses several interesting techniques. Soundness is not proved syntactically, but rather semantically. Some LtU member will be happy to see that the authors use Coq to formalize their proofs. By Ehud Lamm at 2006-10-08 13:16 | Implementation | Type Theory | 11 comments | other blogs | 83463 reads
|
Browse archives
Active forum topics |
Recent comments
2 weeks 3 days ago
2 weeks 4 days ago
2 weeks 5 days ago
2 weeks 5 days ago
3 weeks 3 days ago
3 weeks 3 days ago
3 weeks 3 days ago
6 weeks 4 days ago
7 weeks 2 days ago
7 weeks 3 days ago